#ifndef SINGLEFILEEXPORTTASK_H
#define SINGLEFILEEXPORTTASK_H

#include <QtCore/QRunnable>
#include <QtCore/QObject>
#include <QtCore/QString>
#include <QtGui/QImage>
#include "processingsettings.h"
#include "unifiedfileinfo.h"  // For FileInfo definition
class UnifiedPageRenderer;
class QPainter;

/**
 * 单文件导出任务
 * 在线程池中执行，负责将单个文件导出为PDF
 */
class SingleFileExportTask : public QObject, public QRunnable
{
    Q_OBJECT

public:
    explicit SingleFileExportTask(const UnifiedFileInfo& fileInfo,
                                  const ProcessingSettings& settings,
                                  const QString& outputPath,
                                  int startPageNumber,
                                  UnifiedPageRenderer* renderer,
                                  QObject* parent = nullptr);

    ~SingleFileExportTask() override;

    // QRunnable 接口
    void run() override;

    // 获取文件信息
    QString getFilePath() const { return m_fileInfo.filePath; }
    int getStartPageNumber() const { return m_startPageNumber; }
    int getPageCount() const { return m_fileInfo.pageCount; }

signals:
    // 导出完成
    void exportCompleted(const QString& filePath);
    void exportFailed(const QString& filePath, const QString& error);

    // 进度更新
    void progressUpdated(const QString& filePath, int currentPage, int totalPages);

private:
    // 核心导出逻辑
    bool exportToPDF();

    // PDF写入
    bool initializePDFWriter();
    bool writePageToPDF(int pageIndex, QPainter* painter);
    bool finalizePDFWriter();

    // 页面渲染
    QImage renderPage(int pageIndex);

    // 页码处理
    int calculateGlobalPageNumber(int localPageIndex) const;

    // 任务参数
    UnifiedFileInfo m_fileInfo;
    ProcessingSettings m_settings;
    QString m_outputPath;
    int m_startPageNumber;
    UnifiedPageRenderer* m_renderer;

    // PDF写入器（稍后使用具体实现替换）
    void* m_pdfWriter;

    // 错误处理
    QString m_lastError;
};

#endif // SINGLEFILEEXPORTTASK_H